package pe.gob.inei.sirtod.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class Transpuesta<T extends DomainBase> {
	
	private void mostrar(List<Map<String, Object>> tabla) {
		for(Map<String, Object> map : tabla) {
			System.out.print(map.get("Departamento") + "\t");
			System.out.println(map.get("IndicadorId"));
		}
	}

	public List<Map<String, Object>> unIndicador(List<T> lisDatObt,
			List<String> lisIndSel, List<String> lisDepSel,
			List<String> lisPerVis) {
		return null;
	}

	public List<Map<String, Object>> masIndicadores(List<T> lisDatObt,
			List<String> lisIndSel, List<String> lisDepSel,
			List<String> lisPerVis) {
		List<Map<String, Object>> tabTraDat = new ArrayList<Map<String, Object>>();
		Map<String, Object> fila = null;
		for (String txtDepSel : lisDepSel) {
			for (String txtIndSel : lisIndSel) {
				fila = new HashMap<String, Object>();
				fila.put("Departamento", txtDepSel);
				fila.put("IndicadorId", txtIndSel);
				for (String txtPerVis : lisPerVis)
					fila.put(txtPerVis, "-");
				tabTraDat.add(fila);
			}
		}
		for (T objDatObt : lisDatObt) {
			String txtPerSel = objDatObt.getPeriodo().trim();
			String txtDepSel = objDatObt.getDepartamento().trim();
			Integer nidIndSel = objDatObt.getIndicadorId();
			for (Map<String, Object> filSel : tabTraDat) {
				if (filSel.get("Departamento").toString()
						.equalsIgnoreCase(txtDepSel)
						&& Integer.parseInt(filSel.get("IndicadorId")
								.toString()) == nidIndSel.intValue()) {
					filSel.put(txtPerSel, objDatObt.getValue(Integer.parseInt(txtPerSel)));
					break;
				}
			}
		}
		mostrar(tabTraDat);
		return tabTraDat;
	}
}
